repo: use the skip summary download optimization for repo_remote_fetch_summary
authorGiuseppe Scrivano <gscrivan@redhat.com>
Fri, 11 Mar 2016 12:16:04 +0000 (13:16 +0100)
committerGiuseppe Scrivano <gscrivan@redhat.com>
Tue, 15 Mar 2016 08:48:47 +0000 (09:48 +0100)
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
src/libostree/ostree-repo.c

index 25cfcb80d84cce6c823fc160175fa1505e3c2b51..facc33241a985153be2f48f0fbd9913af47f5aa5 100644 (file)
@@ -1750,9 +1750,7 @@ repo_remote_fetch_summary (OstreeRepo    *self,
   g_autoptr(GMainContext) mainctx = NULL;
   gboolean ret = FALSE;
   SoupURI *base_uri = NULL;
-  uint i;
-  const char *filenames[] = {"summary", "summary.sig"};
-  GBytes **outputs[] = {out_summary, out_signatures};
+  gboolean from_cache = FALSE;
 
   mainctx = g_main_context_new ();
   g_main_context_push_thread_default (mainctx);
@@ -1782,20 +1780,42 @@ repo_remote_fetch_summary (OstreeRepo    *self,
       }
   }
 
-  for (i = 0; i < G_N_ELEMENTS (filenames); i++)
+  if (!_ostree_preload_metadata_file (self,
+                                      fetcher,
+                                      base_uri,
+                                      "summary.sig",
+                                      metalink_url_string ? TRUE : FALSE,
+                                      out_signatures,
+                                      cancellable,
+                                      error))
+    goto out;
+
+  if (*out_signatures)
+    {
+      if (!_ostree_repo_load_cache_summary_if_same_sig (self,
+                                                        name,
+                                                        *out_signatures,
+                                                        out_summary,
+                                                        cancellable,
+                                                        error))
+        goto out;
+    }
+
+  if (*out_summary)
+    from_cache = TRUE;
     {
       if (!_ostree_preload_metadata_file (self,
                                           fetcher,
                                           base_uri,
-                                          filenames[i],
+                                          "summary",
                                           metalink_url_string ? TRUE : FALSE,
-                                          outputs[i],
+                                          out_summary,
                                           cancellable,
                                           error))
         goto out;
     }
 
-  if (*out_summary && *out_signatures)
+  if (!from_cache && *out_summary && *out_signatures)
     {
       if (!_ostree_repo_cache_summary (self,
                                        name,